// 处理dialog句柄变量
if (!labelPrintCustomDialog) {
    var labelPrintCustomDialog;
}

(function (_self, factory) {
    var nameSpace = 'customBtn_1267193033780821164';
    if (!window[nameSpace] && typeof factory === 'function') {
        var Builder = factory();
        window[nameSpace] = {
            initBtn: {}
        };
        /**
         * 初始化方法
         */
        window[nameSpace].init = function (el, options) {
            var identification = Math.floor(Math.round() * 10000000000).toString();
            window[nameSpace].initBtn[identification] = new Builder(el, options, _self, identification);
        }
    }
})(window, function () {
    /**
     * js,css文件加载方法
     */
    var dynamicLoading = {
        css: function (path, name, callBk) {
            if (!path || path.length === 0) {
                throw new Error('argument "path" is required !');
            }
            var head = document.getElementsByTagName('head')[0];
            var link = document.createElement('link');
            link.href = path;
            link.rel = 'stylesheet';
            link.type = 'text/css';
            link.setAttribute('data-name', name);
            link.onload = function () {
                callBk();
            }
            head.appendChild(link);
        },
        insertCss: function (innerTexts, name) {
            var head = document.getElementsByTagName('head')[0];
            var style = document.createElement('style');
            style.type = 'text/css';
            style.setAttribute('data-name', name);
            try {
                style.appendChild(document.createTextNode(innerTexts));
            } catch (ex) {
                style.styleSheet.cssText = innerTexts;//针对IE
            }
            head.appendChild(style);
        },
        checkCss: function (name) {
            var styleList = document.getElementsByTagName('style');
            for (var i = 0; i < styleList.length; i++) {
                if (styleList[i].getAttribute('data-name') === name) return true;
            }
            return false;
        },
        js: function (path, callBk) {
            if (!path || path.length === 0) {
                throw new Error('argument "path" is required !');
            }
            var head = document.getElementsByTagName('head')[0];
            var script = document.createElement('script');
            script.src = path;
            script.type = 'text/javascript';
            script.onload = function () {
                callBk();
            }
            head.appendChild(script);
        },
        checkJs: function (name) {
            var scriptList = document.getElementsByTagName('script');
            for (var i = 0; i < scriptList.length; i++) {
                if (scriptList[i].getAttribute('data-name') === name) return true;
            }
            return false;
        },
    }

    /**
     * 浏览器
     */
    function myBrowser() {
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isOpera = userAgent.indexOf("Opera") > -1;
        if (isOpera) { //判断是否Opera浏览器
            return "Opera"
        }
        ;
        if (userAgent.indexOf("Firefox") > -1) { //判断是否Firefox浏览器
            return "FF";
        }
        ;
        if (userAgent.indexOf("Chrome") > -1) {
            return "Chrome";
        }
        ;
        if (userAgent.indexOf("Safari") > -1) { //判断是否Safari浏览器
            return "Safari";
        }
        ;
        if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) { //判断是否IE浏览器
            return "IE";
        }
        ;
    }

    /**
     * 定义批量下载按钮的构造函数
     * @param {*} options
     * @param {*} _self
     */
    function batchDownload(el, options, _self, identification) {
        var self = this;
        self.window_self = _self;
        self.el = el;
        self.identification = identification;
        self.openHandle = false;
        // 解析传进来的数据
        self.initParams(options);
        // 处理挂载
        self.initBtn(el);
        // 销毁自己
        self.beforeDestroy = function () {
            self = null;
        }
    }

    /**
     * 构造函数的原型方法
     */
    batchDownload.prototype = {
        initParams: function (options) {
            this.place = options.place;
            this.rowData = options.rowData;
            this.data = options.data;
            this.extendApi = options.extendApi;
            this.columnId = options.columnId;
        },
        initBtn: function (el) {
            /**
             * 挂载dom初始化处理
             */
            var innerTexts = '.batchDownloadHandler {' +
                'background-color: rgba(0,0,0,0);' +
                'font-family: "Ping Fang SC", "Microsoft YaHei", Arial, Helvetica, sans-serif, "SimSun";' +
                'cursor: pointer;' +
                'white-space : nowrap;' +
                'border: 0;' +
                'overflow: hidden;' +
                'text-overflow: ellipsis;' +
                '}' +
                '.batchDownloadBox { box-sizing: border-box; cursor: pointer; outline: none; font-family: inherit; white-space: nowrap;display: inline-block; margin-top: 0px; vertical-align: middle; margin-right: 5px;' +
                ' background-color: #fff; border: 1px solid #d4d4d4; color: #666;font-size: 14px; line-height: 28px; height: 30px;}' +
                '.batchDownloadBox:hover{ border-color: #1f85ec; }' +
                '.batchDownloadRow{color: #1f85ec;}' +
                '.batchDownloadRow:hover{color : #479bf3}' +
                '.batchDownloadLi{color : #333}' +
                '.batchDownloadLi:hover{color : #fff}';
            if (!dynamicLoading.checkCss('batchDownload')) {
                dynamicLoading.insertCss(innerTexts, 'batchDownload');
            }
            // 挂载dom
            this.appendDom(el);
        },
        appendDom: function (el) {
            var self = this;
            var labelPrint = document.createElement('div'), labelPrintToolbar, labelPrintIcon;

            var theIcon = this.data.customParams.icon;
            var icon;
            var selfIcon;
            var selfColor
            if (theIcon != "" && theIcon !== 'null') {
                icon = JSON.parse(theIcon);
                selfIcon = icon.iconFont;
                selfColor = icon.color;
            } else {
                selfIcon = 'ico16 affix_16';
                selfColor = '#C3AF1C';
            }

            // 对代码片段进行配置
            el.appendChild(labelPrint);
            // 根据不同位置渲染按钮
            switch (this.place) {
                case 'toolbar':
                    labelPrint.parentNode.setAttribute('class', 'batchDownloadBox');
                    labelPrint.style.padding = '0 14px';
                    // 加入icon
                    labelPrintIcon = document.createElement('i');
                    // labelPrintIcon.setAttribute('class', 'CAP cap-icon-dayin');
                    labelPrintIcon.setAttribute('class', 'CAP ' + selfIcon);
                    // labelPrintIcon.style.color = '#C3AF1C';
                    labelPrintIcon.style.color = selfColor;
                    labelPrint.appendChild(labelPrintIcon);
                    // 加入name信息
                    labelPrintToolbar = document.createElement('span');
                    labelPrintToolbar.innerHTML = this.data && this.data.name ? this.data.name : '';
                    labelPrintToolbar.style.paddingLeft = '3px';
                    labelPrint.appendChild(labelPrintToolbar);
                    break;
                case 'li':
                    labelPrint.innerHTML = this.data && this.data.name ? this.data.name : '';
                    labelPrint.setAttribute('class', 'batchDownloadLi batchDownloadHandler')
                    break;
                case 'row':
                    labelPrint.innerHTML = this.data && this.data.name ? this.data.name : '';
                    labelPrint.setAttribute('class', 'batchDownloadRow batchDownloadHandler')
                    break;
                default:
            }
            labelPrint.onclick = function () {
                switch (self.place) {
                    case 'toolbar':
                        // 点击执行对应的操作
                        self.implementClick();
                        break;
                    case 'li':
                    case 'row':
                        // 点击执行对应的操作
                        self.implementClick(self.rowData);
                        break;
                    default:
                }
            }
            // 阻止数据污染
            labelPrint.parentNode.onclick = function (e) {
                e.stopPropagation();
            }
        },
        // 执行点击事件
        implementClick: function (rowData) {
            var dataIds = window.extendApi.getChooseId();
            if (dataIds == "") {
                alert("请选择附件下载数据");
                return;
            }
            let params = {};
            params.ids = dataIds;
            console.log(params);
            var url;
            $.ajax({
                url: "/seeyon/rest/jssdk/batch/download/attachments",
                data: JSON.stringify(params),
                type: "POST",
                contentType: "application/json;charset=UTF-8",
                error: function (data) {
                    if (data.code == 500) {
                        alert(data.msg);
                        location.reload();
                    }
                },
                success: function (data) {
                    console.log("接口返回信息:" + data);
                    if (data.code == 200) {
                        url = data.url;
                        location.reload();
                    }
                    window.location.href = url;
                }
            });
        },
    };
    /**
     * 返回值
     */
    return batchDownload;
});
